template< class x1, ... ,class xj >
struct name_1{
typedef name_1<x1, ... , xj>  value;
};

template< class y1, ... ,class yk >
struct name_2{
typedef name_1<y1, ... , yk>  value;
};

...
 .
 .
 .
...

template< class z1, ... ,class zn >
struct name_i{
typedef name_1<z1, ... , zn>  value;
};
